import * as Cesium from "cesium";
import publicResourcesData from "@/pointsDatas/publicResourcesData.json";

let arr = publicResourcesData

function addPublicResources(cesiumViewer) {
    arr.forEach((item, index) => {
        cesiumViewer.entities.add({
            infoId: item.id,
            show: false,
            id: "公共资源" + item.resourcesName,
            name: '公共资源图标',
            position: Cesium.Cartesian3.fromDegrees(item.longitude, item.latitude, 110),
            label: { // 文字标签
                text: item.resourcesName,
                font: "24 sans-serif", // 字体大小和类型
                fillColor: Cesium.Color.WHITE, // 文字颜色
                showBackground: true, // 是否显示背景
                backgroundColor: new Cesium.Color(4 / 255, 88 / 255, 176 / 255, 0.8),
                backgroundPadding: new Cesium.Cartesian2(20, 15),   // 背景内边距（水平, 垂直）
                verticalOrigin: Cesium.VerticalOrigin.CENTER, // 垂直居中
                horizontalOrigin: Cesium.HorizontalOrigin.CENTER, // 水平居中
                pixelOffset: new Cesium.Cartesian2(0, 0), // 微调偏移量（按需调整）
                style: Cesium.LabelStyle.FILL, // 文本样式
                minimumPixelSize: 100,  // 最小显示尺寸(像素)
                maximumScale: 1,     // 最大缩放比例
                disableDepthTestDistance: Number.POSITIVE_INFINITY, // 禁用深度测试，确保始终显示在最前
                // distanceDisplayCondition: new Cesium.DistanceDisplayCondition(
                //     0,    // 最小可见距离(米)
                //     9000 // 最大可见距离(米)
                // )
            },
        });
    })
}

function displayPublicResources(viewer, flag, info) {
    if (flag) {
        viewer.entities.values.forEach((item) => {
            if (item.name === '公共资源图标') {
                if (item.id === "公共资源" + info.resourcesName) {
                    item.show = true
                    viewer.flyTo(item,
                        {
                            duration: 2, // 飞行持续时间（秒）
                            maximumHeight: 1000, // 飞行过程中的最大高度（米）
                            offset: {
                                heading: Cesium.Math.toRadians(0), // 航向角（弧度）
                                pitch: Cesium.Math.toRadians(-90), // 俯仰角（弧度），-90表示从正上方看
                                range: 200 // 与实体的距离（米）
                            }
                        }
                    );
                } else {
                    item.show = false
                }
            }
        })

    } else {
        viewer.entities.values.forEach((item) => {
            if (item.name === '公共资源图标') {
                item.show = false
            }
        })
    }
}

export {addPublicResources, displayPublicResources}
